Many types of electronic equipment have incorporated microprocessor-based controllers to manage their ever-increasing complexities of operation. Such types include electronic instruments, electronic consumer devices, and printers and plotters as computer accessories, to name just a few. The controllers receive commands from the user, display information, store data, communicate with other devices including computers, and manage the operation of the apparatus in which they reside.
A typical controller will include a microprocessor and a goodly amount of support circuitry, much of it required by the nature of the specific equipment. For instance in a printer--the technical area of the genesis of the present invention--some support circuitry is dedicated to interfacing with motors, print heads, and position sensors. Other circuits are assigned to user information display, others to memory access for the microprocessor, and yet others to serial and/or parallel data transfer with the outside world, and so on.
For reasons of economy and compactness, a common practice is to combine most of this peripheral circuitry into a single application-specific-integrated-circuit (ASIC). An ASIC normally has many connection pins, some for communication with the microprocessor and others for connecting to the various parts of the apparatus.
Designers of the controller must allow for variations in the environment in which the controller finds itself. To function properly, the controller and the ASIC must determine the features and conditions of the environment in which they will operate. One way to do this is to have a power-on initialization routine, during which the controller reads the state of certain switches and jumpers, etc, into a configuration register where the environment information will be available.
Among the variations that must be accomodated is the use of either fast-clock or slow-clock versions of the microprocessor. This may be due to parts availability considerations, to electromagnetic interference considerations, or to widely differing features of the printer models into which the controller is installed. The ASIC, however, is only capable of operating with a slow clock, yet it cannot have its own separate clock, since it must work synchronously with the microprocessor. The ASIC could divide the frequency of a fast clock, if such is needed by the microprocessor, to obtain a slow clock for its own use. But it must be configured at the start of operation to divide the clock input. Unfortunately, information to determine clock division cannot be included in the initialization data to be read in, since reading and storing this data requires the clock to be functioning already. In situations like this, the customary solution is to assign one of the ASIC connection pins for this purpose, and to set the logic state of the connection by a switch or equivalent. This allows the ASIC to configure its clock input appropriately when power is applied. However, IC connection pins are a valuable resource to the designer, and it is desirable to find another method to inform the ASIC of the clock requirement.